Tarea 1: Foundations

CC6104: Statistical Thinking

Integrantes :

Cuerpo Docente:

Fecha límite de entrega:

Índice:

  1. Objetivo
  2. Instrucciones
  3. Referencias
  4. Primera Parte: Preguntas Teóricas
  5. Segunda Parte: Elaboración de Código

Objetivo

a la primera tarea del curso Statistical Thinking. Esta tarea tiene como objetivo evaluar los contenidos teóricos de la primera parte del curso, los cuales se enfocan principalmente en análisis exploratorio de datos y conceptos introductorios de probabilidades. Si aún no han visto las clases, se recomienda visitar los enlaces de las referencias.

La tarea consta de una parte teórica que busca evaluar conceptos vistos en clases. Seguido por una parte práctica con el fín de introducirlos a la programación en R enfocada en el análisis estadístico de datos.

Instrucciones:

Referencias:

Slides de las clases:

Videos de las clases:

Primera Parte: Preguntas Teóricas

A continuación, se presentaran diferentes preguntas que abordan las temáticas vistas en clases. Por favor responda cada una de estas preguntas de forma breve, no más de 4 o 5 lineas.

Pregunta 1:

¿Por qué la estadística es importante?, ¿Que nos permite realizar con los datos?. De algún ejemplo.

Porque la estadística es una herramienta que trabaja el análisis e interpretación de datos, permitiendonos Describir, Decidir y Predecir el mundo que nos rodea.

Un ejemplo visto en clase es el estudio de las grasas saturadas. Una idea común es que comer muchas grasas saturadas, o incluso consumir un poco de ellas es muy perjudicial a la salud. Pero resulta que después de un estudio estadístico se pudo determinar que no solo no son malas, si no que hasta cierto punto estas son beneficiosas para la salud.

De no ser por la estadística, no podríamos haber descrito realmente la influencia de las grasas saturadas sobre la salud, y nos hubieramos basado en un pensamiento más Eurístico que Empírico para la desicion de dietas, nutrición, etc.

Pregunta 2:

Un amigue cercano a usted le comenta que le preocupa salir a la calle cuando hay ofertas en los helados, esto debido a que ha visto el siguiente titular en un famoso diario chileno: “El aumento en la compra de helados tiene una alta correlación con la muerte de personas en Santiago”. ¿Que le recomendaría a su amigue sobre el titular leído?, ¿Debería preocuparse tanto?.

Le recomendaría que debería dejar de preocuparse, dado que el titular divulga probablemente información falsa y sin un estudio estadístico exhastivo.

En la disciplina de la estadística es muy dificil saber cuando tenemos causalidades directas entre variables, dado que varias relaciones ocultan otras realidades y relaciones ocultas, las cuales llamamos variables de confusión.

Lo anterior lleva a que la Correlación entre variables no implica Causalidad, lo cuál en palabras más simples y aplicado al ejemplo significa que no porque aumente la cantidad de ofertas de helados significa que más gente va a morir. No estamos considerando otras variables ocultas, como por ejemplo, probablemente todo lo anterior se debe al aumento de la temperatura en la ciudad de Santiago.

Pregunta 3:

Señale las diferentes aplicaciones que poseen las visualizaciones: Boxplot, histograma, gráfico de pie y scatterplot.

Boxplot: Nos permite visualizar la distribución de datos numéricos, pero a diferencia de los gráficos de funciones de densidad o probabilidad como la normal, este segmenta los datos en cuartiles y es capaz de mostrarlos utilizando una única dimensión. La marca central indica la mediana, el rectángulo central indica donde se ubica el 25% de los datos menores y 25% de los datos mayores a la mediana, mientras que los bigotes indican los valores más externos. Este a su vez sirve para poder observar outliers o valores atípicos dentro de los datos.

Histograma: Nos permiten visualizar la distribución completa de los datos numéricos, ya sean discretos o continuos (utilizando rangos de valores). Al visualizar por completo la distribución de los datos por rangos, podemos tener una idea de la forma que toma la función de de densidad de probabilidad del dataset.

Gráfico de Pie: A diferencia de los gráficos anteriores, el Pie Chart sirve para visualizar proporciones numéricas de un conjunto de datos. Es útil cuando queremos visualizar distribuciones de variables categóricas, pero no es viable para mostrar demasiados datos al dificultar su comprensión.

Scatterplot: Este gráfico utiliza coordenadas cartesianas para graficar datos numéricos con dos o más variables. Es útil para apreciar el nivel de dependencia y correlación entre dos variables numéricas de un dataset, sean lineales o no lineales.

Pregunta 4:

Suponga que esta estudiando la diferencia en los sueldos de las personas que viven en Santiago y Rancagua. Suponiendo que los datos poseen outliers, ¿Que métrica de resumen utilizaría para comparar los datos?. Justifique su respuesta.

Utilizaría la mediana, ya que a diferencia del promedio esta es más robusta ante valores extremos en los datos, debido a que esta depende de la cantidad y densidad de los datos en vez de sus valores.

Pregunta 5:

En base al mismo dataset de sueldos para las regiones de Santiago y Rancagua, le comentan que existe un error en los datos y que estos deben ser modificados aumentando un 10% el valor original y sumando \(15.000\) a cada uno de los datos. ¿Como se ve afectada la media, mediana y desviación estándar con esta modificación?. Explique a través de ecuaciones el cambio que experimentan las métricas de resumen respecto al valor original, considere para el caso de la media \(\bar{X}_{old} = \dfrac{1}{m} \sum^{m}_{i=1} x_i\) y \(sd_{old} = \sqrt{\dfrac{1}{(m-1)}\sum_{i=1}^{m}(x_i-\bar{x})^{2}}\) para la desviación estándar.

Respuesta Aquí

Pregunta 6:

Suponga que debe responder un examen sorpresa de 10 preguntas, con 5 alternativas por cada pregunta. ¿Cual es la probabilidad de obtener mas de 5 alternativas correctas si responde de forma aleatoria todo el examen?.

Nota: Puede resolver el ejercicio desarrollándolo a mano o utilizando código en R.

# Debido a que queremos calcular la probabilidad de un suceso dicotómico, es claro
# que tenemos una distribución Binomial:

# La probabilidad de responder cada pregunta correctamente es de un quinto:
p = 0.2
# Sabemos que son 5 preguntas de 10: 
x = 5
size = 10

# Luego la probabilidad solicitada es:
dbinom(x, size, p)
## [1] 0.02642412

Pregunta 7:

Supongamos que el 10% de los alumnos del curso utilizan Macintosh, el 60% utiliza Windows y el 30% utiliza Linux. Supongamos que el 50% de los usuarios de Mac, el 78% de los usuarios de Windows y el 20% de los usuarios de Linux han sucumbido bajo un terrible virus. Al seleccionar una persona al azar nos enteramos de que su sistema está infectado por el virus. ¿Cuál es la probabilidad de que sea un alumno con Windows?.

Recopilemos las probabilidades conocidas:

SO: M 10%, W 60%, 30$ L.

Virus: M 50%, 78% W, 20% L.

Sabiendo que la persona escogida si tiene un virus, debemos calcular la probabilidad de que el alumno tenga windows, esto es, calcular \(\mathbb{P}( \text{Windows} | \text{Virus})\). Ahora por Teorema de Bayes, tenemos que \(\mathbb{P}(X | Y) = \frac{\mathbb{P}(Y | X)*\mathbb{P}(X) }{\mathbb{P}(Y)}\), y definiendo \(X\) como el evento de que alguien tenga Windows, e \(Y\) como el evento de que alguien tenga el Virus, tendremos lo siguiente:

\(\mathbb{P}(\text{Windows}, \text{Virus}) = \frac{\mathbb{P}(\text{Virus} | \text{Windows}) * \mathbb{P}(\text{Windows})}{\mathbb{P}(\text{Virus})}\)

\(\mathbb{P}(\text{Windows}, \text{Virus}) = \frac{0.78 * 0.6}{\mathbb{P}(\text{Virus})}\)

Ahora, usando que:

\(\mathbb{P}(X) = \sum^{n}_{i=1} \mathbb{P}(X, Y_{i}) = \sum^{n}_{i=1} \mathbb{P}(X | Y_{i}) * \mathbb{P}(Y_{i})\)

Podemos calcular \(\mathbb{P}(\text{Virus}) = \sum^{n}_{i=1} \mathbb{P}(X | Y_{i}) * \mathbb{P}(Y_{i}) = 0.5*0.1 + 0.78*0.6 + 0.2*0.3 = 0.578\)

Finalmente \(\mathbb{P}(\text{Windows}, \text{Virus}) = \frac{0.78 * 0.6}{0.578} \approx 0.81\)

Pregunta 8:

Señale si las siguientes declaraciones son verdaderas o falsas respecto a las variables aleatorias:

  • Como las variables aleatorias son funciones que nos permiten obtener valores de probabilidad, siempre podemos obtener \(\mathbb{P}(X=x)>0\) evaluando en una \(f(x)\) continua y discreta.
  • Una PDF bien definida solo puede tener valores menores a 1 y un área debajo de la curva igual a 1.
  • La CDF puede ser representada como la integral de la PDF y PMF.
  • Una CDF es definida para todo x, continua hacia la derecha y no es decreciente.

Respuesta Aquí

Pregunta 9:

Una famosa fabrica de dulces señala que solo el \(5\%\) de sus dulces contienen menos de \(350\) gramos. Si los dulces elaborados por la fabrica distribuyen de forma normal, con media \(\mu\) y desviación estándar \(11.2\). Responda las siguientes preguntas:

    1. Encuentre la media del producto.
    1. Señale el porcentaje de dulces que se encuentran sobre los \(390\) gramos.

Nota: Puede ser útil https://www.statskingdom.com/z_table.html

Utilizando el enlace podemos determinar que \(\mathbb{P}(X < -1.645) \approx 0.05\). Luego utilizando que \(X = \mu + \sigma Z\) tenemos que:

\(350 = \mu - 1.645 \sigma\)

\(\mu = 350 + 1.645*11.2 \approx 368.4\). Finalmente \(\mu \approx 368.4\) (a)

Ahora debemos transformar de la distribución actual a la normal, lo cuál se hace utilizando \(Z = \frac{X - \mu}{\sigma}\). Así desarrollamos como sigue:

\(Z = \frac{390 - 368.4}{11.2} \approx 1.93\). Y viendo la tabla del enlace podemos determinar que \(\mathbb{P}(X < 1.93) \approx 0.97 \Rightarrow \mathbb{P}(X > 1.93) \approx 1 - 0.97 = 3 \%\) (b)


Segunda Parte: Elaboración de Código

En la siguiente sección deberá resolver cada uno de los experimentos computacionales a través de la programación en R. Para esto se le aconseja que cree funciones en R, ya que le facilitará la ejecución de gran parte de lo solicitado.

Pregunta 1: Visualización de Datos

Para esta pregunta usted deberá trabajar en base al conjunto de datos hearth_database.csv, el cual esta compuesto por las siguientes variables:

  • target: Señala si el paciente tuvo un infarto.
  • sex: Sexo de los sujetos de prueba.
  • fbs: Azúcar en la sangre con ayunas. Esta variable señala solo si se encuentra <=120 o >120.
  • exang: Angina de pecho inducida por el ejercicio.
  • cp: Tipo de dolor de pecho.
  • restecg: Resultados electrocardiográficos en reposo.
  • slope: Pendiente del segmento ST máximo de ejercicio.
  • ca: Número de buques principales.
  • thal: Thalassemia.
  • age: Edad en años.
  • trestbps: Presión arterial en reposo.
  • chol: colesterol sérico en mg/dl.
  • thalach: Frecuencia cardíaca máxima alcanzada.
  • oldpeak: Depresión del ST inducida por el ejercicio en relación con el reposo.

En base al dataset propuesto realice un análisis exploratorio de los datos (EDA). Para su análisis enfoquen el desarrollo en las siguientes tareas:

  • Obtenga la media, mediana, quintiles y valores máximos desde los datos que componen el dataset.
  • Obtenga la Matriz de correlación de Pearson y visualice la relación entre las variables numéricas.
  • Visualice los boxplot para las variables numéricas.
  • Visualice a través de un histograma como distribuyen las variables respecto a los TARGET.

Respuesta

hdb <- read.csv("hearth_database.csv")
head(hdb)

Es importante chequear si es que existen valores nulos dentro del dataset antes de realizar la exploración sobre este. Para revisar la presencia de valores inexistentes se utilizará la función is.na(), que retorna un valor de verdad dependiendo si el dato es NA o no. Realizaremos la operación suma sobre estos valores booleanos, si la suma resultante es 0 quiere decir que no se encontraron valores en el dataset en que is.na() retornará TRUE, lo que nos indicaría que no hay datos inexistentes en las columnas.

sum(is.na(hdb))
## [1] 0

La función summary aplica estadísticas a cada columna. En particular, indica el promedio, mediana, quantiles, máximo, mínimo, entre otros. Además, cambiaremos el nombre de la columna age que tenía un error de tipado.

colnames(hdb)[10] <- "age"
summary(hdb)
##     target              sex                fbs               exang          
##  Length:303         Length:303         Length:303         Length:303        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##       cp              restecg              slope             ca        
##  Length:303         Length:303         Min.   :0.000   Min.   :0.0000  
##  Class :character   Class :character   1st Qu.:1.000   1st Qu.:0.0000  
##  Mode  :character   Mode  :character   Median :1.000   Median :0.0000  
##                                        Mean   :1.399   Mean   :0.7294  
##                                        3rd Qu.:2.000   3rd Qu.:1.0000  
##                                        Max.   :2.000   Max.   :4.0000  
##       thal            age           trestbps          chol      
##  Min.   :0.000   Min.   :29.00   Min.   : 94.0   Min.   :126.0  
##  1st Qu.:2.000   1st Qu.:47.50   1st Qu.:120.0   1st Qu.:211.0  
##  Median :2.000   Median :55.00   Median :130.0   Median :240.0  
##  Mean   :2.314   Mean   :54.37   Mean   :131.6   Mean   :246.3  
##  3rd Qu.:3.000   3rd Qu.:61.00   3rd Qu.:140.0   3rd Qu.:274.5  
##  Max.   :3.000   Max.   :77.00   Max.   :200.0   Max.   :564.0  
##     thalach         oldpeak    
##  Min.   : 71.0   Min.   :0.00  
##  1st Qu.:133.5   1st Qu.:0.00  
##  Median :153.0   Median :0.80  
##  Mean   :149.6   Mean   :1.04  
##  3rd Qu.:166.0   3rd Qu.:1.60  
##  Max.   :202.0   Max.   :6.20

Para conseguir los quintiles de cada uno de los datos numéricos, utilizaremos la función de R quantile (por algun motivo el for sobre 7 a 14 no retornaba los resultados, por lo que decidí ir uno por uno):

colnames(hdb)[7]
## [1] "slope"
quantile(hdb[, 7], seq(0, 1, 0.2))
##   0%  20%  40%  60%  80% 100% 
##    0    1    1    2    2    2
colnames(hdb)[8]
## [1] "ca"
quantile(hdb[, 8], seq(0, 1, 0.2))
##   0%  20%  40%  60%  80% 100% 
##    0    0    0    1    2    4
colnames(hdb)[9]
## [1] "thal"
quantile(hdb[, 9], seq(0, 1, 0.2))
##   0%  20%  40%  60%  80% 100% 
##    0    2    2    2    3    3
colnames(hdb)[10]
## [1] "age"
quantile(hdb[, 10], seq(0, 1, 0.2))
##   0%  20%  40%  60%  80% 100% 
##   29   45   53   58   62   77
colnames(hdb)[11]
## [1] "trestbps"
quantile(hdb[, 11], seq(0, 1, 0.2))
##   0%  20%  40%  60%  80% 100% 
##   94  120  126  134  144  200
colnames(hdb)[12]
## [1] "chol"
quantile(hdb[, 12], seq(0, 1, 0.2))
##    0%   20%   40%   60%   80%  100% 
## 126.0 204.0 230.0 254.0 285.2 564.0
colnames(hdb)[13]
## [1] "thalach"
quantile(hdb[, 13], seq(0, 1, 0.2))
##   0%  20%  40%  60%  80% 100% 
##   71  130  146  159  170  202
colnames(hdb)[14]
## [1] "oldpeak"
quantile(hdb[, 14], seq(0, 1, 0.2))
##   0%  20%  40%  60%  80% 100% 
## 0.00 0.00 0.38 1.12 1.90 6.20

Ahora veremos la Matriz de Pearson para visualizar las correlaciones entre todas las variables numéricas:

library(ggplot2)

Boxplots

ggplot(data = hdb, aes(y = slope , x = target)) +
  geom_boxplot() 

ggplot(data = hdb, aes(y = ca , x = target)) +
  geom_boxplot() 

ggplot(data = hdb, aes(y = thal , x = target)) +
  geom_boxplot() 

ggplot(data = hdb, aes(y = age , x = target)) +
  geom_boxplot() 

ggplot(data = hdb, aes(y = trestbps , x = target)) +
  geom_boxplot() 

ggplot(data = hdb, aes(y = chol , x = target)) +
  geom_boxplot() 

ggplot(data = hdb, aes(y = thalach , x = target)) +
  geom_boxplot() 

ggplot(data = hdb, aes(y = oldpeak , x = target)) +
  geom_boxplot()


Pregunta 2: Teorema Central del Limite

Pruebe el teorema central del limite aplicando un muestreo de la media en las distribuciones Poisson, Exponencial y una a su elección. Grafique los resultados obtenidos y señale aproximadamente el numero de muestreos necesarios para obtener el resultado esperado, pruebe esto con las siguientes cantidades de muestreo \(\{10,100,1000,5000\}\). ¿El efecto ocurre con el mismo número de muestreo para todas las distribuciones?.

Respuesta

# Definición de variables o estructuras necesarias para el muestreo.
n <- 1000

# Realizar el muestreo de las distribuciones.
for(i in 1:n) {
  
}

# Código para gráficos

Pregunta 3: Ley de los Grandes Numeros.

Lanzamiento de monedas

Realice el experimento de lanzar una moneda cargada 1000 veces y observe el comportamiento que tiene la probabilidad de salir cara. Para realizar el experimento considere que la moneda tiene una probabilidad de \(4/5\) de salir cara. Grafique el experimento para las secuencias de intentos que van desde 1 a 1000, señalando el valor en que converge la probabilidad de salir cara.

Respuesta

# Simular lanzamientos
for (lanzamientos in 1:1000) {
  
}

# Gráfico de la convergencia

El problema de Monty Hall

Remontándonos en la televisión del año 1963, en USA existía un programa de concursos donde los participantes debían escoger entre 3 puertas para ganar un premio soñado. El problema del concurso era que solo detrás de 1 puerta estaba el premio mayor, mientras que detrás de las otras dos habían cabras como “premio”.

Una de las particularidades de este concurso, es que cuando el participante escogía una puerta, el animador del show abría una de las puertas que no fue escogida por el participante (Obviamente la puerta abierta por el animador no contenía el premio). Tras abrir la puerta, el animador consultaba al participante si su elección era definitiva, o si deseaba cambiar la puerta escogida por la otra puerta cerrada.

Imagine que usted es participante del concurso y desea calcular la probabilidad de ganar el gran premio si cambia de puerta en el momento que el animador se lo ofrece. Utilizando listas/arrays/vectores simule las puertas del concurso, dejando aleatoriamente el premio en alguna posición del array. Hecho esto, genere un numero de forma aleatoria para escoger una de las puerta (posiciones de la estructura), para luego ver si cambiando de posición tendrá mayores posibilidades de ganar el premio. Genere N veces el experimento y grafique cada una de las iteraciones, tal como se hizo en el ejercicio de las monedas.

Respuesta:

# Creamos una función que simule el juego
montyhall <- function(cambiar = TRUE){
  Puertas <- sample(1:3,3)             #Puertas donde la posición que tiene el 3 es el premio
  posicion <- sample(1:3,1)            #Elección del participante.
  
  return(Eleccion) # Retornamos la elección, esta puede que tenga el premio o no
}

# Función que simula N juegos
n_juegos <- function(n = 10 ,cambiar_puerta = TRUE){
  
}

Pregunta 4: ¿Independencia?

Ustedes disponen de los dados D1 y D2, los cuales no están cargados y son utilizados para comprobar que \(\mathbb{P}(AB)=\mathbb{P}(A)\mathbb{P}(B)\) cuando el evento A es independiente del B. Para estudiar la independencia considere que los eventos A y B se definen de la siguiente manera; sea A el evento dado por los valores obtenidos en el lanzamiento del dado D1, este está compuesto por \(A=\{D1=1,D1=2,D1=6\}\). Por otro lado, el evento B viene dado por los valores obtenidos con el dado D2, el que está conformado por \(B=\{D2=1,D2=2,D2=3,D2=4\}\). Con esto, tendremos un \(\mathbb{P}(A)=1/2\), \(\mathbb{P}(𝐵)=2/3\) y \(\mathbb{P}(AB)=1/3\). Compruebe de forma gráfica que al realizar 1000 lanzamientos (u otro valor grande que usted desea probar) se visualiza que \(\mathbb{P}(AB)=\mathbb{P}(A)\mathbb{P}(B)\).

Hecho lo anterior, compruebe el comportamiento de un segundo grupo de eventos, dados por el lanzamiento de solo el dado D1. Donde, los eventos para D1 quedan definidos como: \(A =\{D1=1,D1=2,D1=6\}\) y \(B=\{D1=1,D1=2,D1=3\}\). ¿Se observa independencia en este experimento?.

Se le aconseja que para simular los lanzamientos de dados utilice la función sample() para generar valores aleatorios entre 1 y 6. Compruebe los números generados por la función con los casos favorables de cada uno de los eventos a ser estudiados.

Respuesta:

# Primer grupo de eventos
N_lan = 1000 # Numero de lanzamientos
  
L_A =  # Lanzamientos favorables A = c(1, 2, 6)
L_B =  # Lanzamientos favorables B = c(1, 2, 3, 4)
L_AB = # Lanzamientos favorables AB = c(1, 2)
# Segundo grupo de eventos
N_lan = 1000 # Numero de lanzamientos
  
L_A =  # Lanzamientos favorables A = c(1, 2, 6)
L_B =  # Lanzamientos favorables B = c(1, 2, 3)
L_AB = # Lanzamientos favorables AB = c(1, 2)

Pregunta 5: La Ruina del Jugador

Un amigo ludópata suyo le comenta que el truco de jugar en el casino esta en no parar de apostar y apostando lo mínimo posible. Ya que así, tienes mas probabilidades de ganar el gran pozo que acumula el juego. Usted sabiendo la condición de su amigo, decide no creer en su conjetura y decide probar esto a través de un experimento.

Para realizar el experimento usted decide asumir las siguientes declaraciones, bajo sus observaciones:

  • La probabilidad de ganar en un juego del casino es \(9/19\)
  • Sabe que su amigo posee fondos en el rango de 0 a 200 dolares.
  • Las apuestas como mínimo deben ser igual a 5 dolares.
  • El monto de las apuestas no cambia y son siempre igual a la primera. Por ejemplo, si su amigo apuesta 50 dolares, todos los próximos juegos apuesta 50 hasta que se acaba su dinero.

En el experimento deberá obtener la evolución de los fondos hasta que el jugador se queda sin fondos para jugar. Puede ser útil seguir la lógica de una moneda cargada para realizar esto. Pruebe esto con una apuesta igual a 5, 25 y 50 graficando los resultados. Comente los resultados obtenidos.

Respuesta

# Función para obtener el desarrollo de las apuestas
ruina <- function(fondos = 100, apuesta = 5){
  while (0<fondos & fondos<200) {
    
  }
  return(vec_fondos) # Devuelve un vector con el desarrollo de los fondos
}

plot(ruina(), type="l", col="blue", xlab="N° de juegos", ylab="Fondos", main="Evolución de los fondos (apuesta = 5)")
plot(ruina(apuesta = 25), type="l", col="blue", xlab="N° de juegos", ylab="Fondos", main="Evolución de los fondos (apuesta = 25)")
plot(ruina(apuesta = 50), type="l", col="blue", xlab="N° de juegos", ylab="Fondos", main="Evolución de los fondos (apuesta = 50)")
 

A work by CC6104